package main

import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

/*
------事务声明
------事务的提交
------事务的回滚
*/

func main() {
	//链接数据库
	db, err := gorm.Open("mysql", "root:123456@tcp(192.168.11.189:3306)/lztest?charset=utf8&parseTime=True&loc=Local")

	//链接失败，下面就不在执行
	if err != nil {
		panic(err)
	}

	//数据库使用结束释放资源
	defer db.Close()

	//跟踪数据库执行语句
	db.LogMode(true)

	// 开启事务
	tx := db.Begin()

	// 注意，一旦你在一个事务中，使用tx作为数据库句柄
	if err := tx.Create(&User{UName: "张三"}).Error; err != nil {
		tx.Rollback()
	}

	tx.Commit()

}

type GetData struct {
	UName string
	UAge  int
	Add   string
	Desc  string
}

type User struct {
	UId   int `gorm:"primary_key;AUTO_INCREMENT"`
	UName string
	UAge  int
}

type UserInfo struct {
	InfoID int `gorm:"primary_key;AUTO_INCREMENT"`
	Add    string
	Desc   string
	User   User `gorm:"ForeignKey:Usid;AssociationForeignKey:UId"`
	Usid   int
}
